package com.zach.common.service;

import java.util.List;

import com.zach.common.entity.UserFunctionTree;

public interface UserFunctionTreeService {
	/**
	 * 新增一个节点，增加之前请确认id已经生成或者赋予
	 * @param tree
	 */
	public void addNode(UserFunctionTree tree);
	/**
	 * 级联删除所有相应的节点。
	 * @param nodeId
	 * @return
	 */
	public int delNodesCascade(String nodeId);
	
	/**
	 * 根据唯一id进行更新
	 * @param tree
	 */
	public void updateNode(UserFunctionTree tree);
	
	public UserFunctionTree getNode(String nodeId);
	
	public List<UserFunctionTree> getTreeList(UserFunctionTree tree);
	/**
	 * 通过用户来查询用户所拥有功能树列表
	 * @param loginName 用户登录名
	 * @return
	 */
	public List<UserFunctionTree> getTreeListByUserId(String loginName);
	/**
	 * 通过角色代码来查询功能树列表
	 * @param roleId
	 * @return
	 */
	public List<UserFunctionTree> getTreeListByRole(String roleId);
	/**
	 * 通过功能树父节点id来获取其所有子节点
	 * @param parentId
	 * @return
	 */
	public List<UserFunctionTree> getTreeListByParentId(String parentId);
	/**
	 * 通过父节点来查询子节点。一般情况下，传入的参数就包含用户编号或者角色编号
	 * @param parentTree 
	 * @return
	 */
	public List<UserFunctionTree> getTreeListAllByParent(UserFunctionTree parentTree);
	/**
	 * 一个服务方法类
	 * @param tree
	 * @return
	 */
	public String generateEasyUIJsonTree(UserFunctionTree tree);
	
}
